﻿using FAMailUtils;
using FAMailUtils.Data.DTO;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using FAMailUtils.Data.DAO;
using famails.bus;
using FAMailUtils.Data.DTO;

namespace OnlineBusinesses.Areas.CustomerAdmin
{
    public partial class Profile : Page
    {

        static ClientDAO dao = new ClientDAO();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                if (((AdminCustomer_Master)Page.Master).getUserLogin() == null) return;
                FAMailUtils.Data.DTO.ClientDTO company = dao.GetByClientID(((AdminCustomer_Master)Page.Master).getUserLogin().Client.ClientID);
                txtHoTen.Text = company.ClientName;
                txtDiaChi.Text = company.Address;
                txtSoDienThoai.Text = company.Phone;
                //DateTime d = DateTime.Now;// Convert.ToDateTime(dtClient.Rows[0]["dateofbirth"].ToString());
                if (company.DateOfBirth!=null)
                    txtBirthday_v.Value = company.DateOfBirth.Value.ToString("yyyy/MM/dd");
            }
        }

        protected void btnUpdate_Click(object sender, EventArgs e)
        {
            try
            {
                if (CheckBeforeSave())
                {
                    return;
                }
                else
                {
                    ClientBUS clientbus = new ClientBUS();
                    famails.dto.ClientDTO dto = new  famails.dto.ClientDTO();
                    dto.ClientId = ((AdminCustomer_Master)Page.Master).getUserLogin().Client.ClientID;
                    dto.ClientName = txtHoTen.Text;
                    dto.Address = txtDiaChi.Text;
                    dto.Phone = txtSoDienThoai.Text;
                    DateTime? dateofbirth = famails.common.Common.convertStringToDate(txtBirthday_v.Value);
                    dto.DayOfBirth = dateofbirth.Value;
                    clientbus.UpdateInfomation(dto);
                    //LoadData();
                    pnSuccess.Visible = true;
                    lblSuccess.Text = "Cập nhật thông tin thành công!";
                }
            }
            catch (Exception ex)
            {
                Common.logs(Request.RawUrl + "-" + FAMailUtils.Common.GetCurrentMethod(), ex, Common.logType.error);
                pnError.Visible = true;
                lblError.Text = "Lưu dữ liệu không thành công!" + ex.Message.ToString();
            }
        }

        bool CheckBeforeSave()
        {
            string message = "";
            if (txtHoTen.Text.Trim() == "")
                message = "Họ tên không được rỗng!";
            if (txtDiaChi.Text.Trim() == "")
                message = "Địa chỉ không được rỗng!";
            if (txtSoDienThoai.Text.Trim() == "")
                message = "Số điện thoại không được rỗng!";
            if (convertStringToDate(txtBirthday_v.Value) == null)
                lblError.Text = "Ngày sinh không hợp lệ!";
            if (message.Length > 0)
            {
                pnError.Visible = true;
                lblError.Text = message;
            }
            return message.Length > 0;
        }

        protected DateTime? convertStringToDate(string strDate)
        {
            try
            {
                int day = int.Parse(strDate.Substring(0, 2));
                int month = int.Parse(strDate.Substring(3, 2));
                int year = int.Parse(strDate.Substring(6, 4));
                DateTime dDate = new DateTime(year, month, day, 00, 00, 00);
                return dDate;
            }
            catch (Exception ex)
            {
                Common.logs(Request.RawUrl + "-" + FAMailUtils.Common.GetCurrentMethod(), ex, Common.logType.error);
            }
            return null;
        }
        [System.Web.Services.WebMethod]
        [System.Web.Script.Services.ScriptMethod(ResponseFormat = System.Web.Script.Services.ResponseFormat.Json)]
        public static string ChangePass(string currentpass, string newpass)
        {
            try
            {
                UserLoginDTO user = (UserLoginDTO)HttpContext.Current.Session["UserLogin"];
                string inputOldPass = Common.GetMd5Hash(currentpass);
                string message = user.Client.Password == inputOldPass ? "" : "Mật khẩu hiện tại không đúng!";
                if (message == "")
                {
                    UserLoginBUS ulBus = new UserLoginBUS();
                    newpass = Common.GetMd5Hash(newpass);
                    ulBus.tblUserLogin_ChangePass(user.Client.UserID, newpass);
                    user.Client.Password = newpass;
                    HttpContext.Current.Session["UserLogin"] = user;

                    return "Đã thay đổi mật khẩu thành công !";
                }
                else
                {
                    return message;
                }
            }
            catch (Exception ex)
            {
                Common.logs(HttpContext.Current.Request.RawUrl + "-" + FAMailUtils.Common.GetCurrentMethod(), ex, Common.logType.error);
                return ex.Message;
            }
        }
    }
}